<?php
def("amicitia/arquitectura/","Accion");
def("amicitia/arquitectura/","Sesion");
def("amicitia/arquitectura/seguridad/excepciones/","AutorizacionException");
def("amicitia/arquitectura/errores/","Recuperador");
def("amicitia/arquitectura/errores/","Error");

class ErrorAccion implements Accion{
	
	const ERROR = "error";
	
	private $msj;
	
	/** @)Recurso(tipo=normal,nivel=1) */
	public function hacer() {
		return self::ERROR;
	}
	
	/** @)Recurso(tipo=normal,nivel=1) */
	public function inesperado() {
		
		$ocurrido = Recuperador::getOcurrido();
		switch($ocurrido){
			
			case Recuperador::EXCEPCION :
				$exception = Recuperador::getUltimaExcepcion();
				$this->setMsj($exception->getMessage());
				break;
				
			case Recuperador::ERROR :
				$error = Recuperador::getUltimoError();
				$this->setMsj($error->getErrstr());
				break;
				
			case Recuperador::ERROR_FATAL :
				$mensaje = Recuperador::getUltimoErrorFatal();
				$this->setMsj($mensaje);
				break;
				
		}
			
		return self::ERROR;
	}
	
	/** @)Recurso(tipo=normal,nivel=1) */
	public function autorizacion() {
		$autorizacionException = Sesion::getSesion()->recobrarObjeto(Recuperador::ULTIMA_EXCEPCION);
		$this->setMsj($autorizacionException->getMessage());
		return self::ERROR;
	}
	
	public function setMsj($msj) {
		$this->msj = $msj;
	}
	
	public function getMsj() {
		return $this->msj;
	}
	
	
	
}
?>